#!usrbinenv bash
# Copyright 1999-2019 Seata.io Group.
#
# Licensed under the Apache License, Version 2.0 (the License);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at、
#
#      httpwww.apache.orglicensesLICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an AS IS BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

while getopts hpgtuw opt
do
  case $opt in
  h)
    host=$OPTARG
    ;;
  p)
    port=$OPTARG
    ;;
  g)
    group=$OPTARG
    ;;
  t)
    tenant=$OPTARG
    ;;
  u)
    username=$OPTARG
    ;;
  w)
    password=$OPTARG
    ;;
  )
    echo  USAGE OPTION $0 [-h host] [-p port] [-g group] [-t tenant] [-u username] [-w password] 
    exit 1
    ;;
  esac
done

urlencode() {
  for ((i=0; i  ${#1}; i++))
  do
    char=${1$i1}
    case $char in
    [a-zA-Z0-9.~_-]) printf $char ;;
    ) printf '%%%02X' '$char ;;
    esac
  done
}

if [[ -z ${host} ]]; then
    host=localhost
fi
if [[ -z ${port} ]]; then
    port=8848
fi
if [[ -z ${group} ]]; then
    group=SEATA_GROUP
fi
if [[ -z ${tenant} ]]; then
    tenant=
fi
if [[ -z ${username} ]]; then
    username=
fi
if [[ -z ${password} ]]; then
    password=
fi

nacosAddr=$host$port
contentType=content-typeapplicationjson;charset=UTF-8

echo set nacosAddr=$nacosAddr
echo set group=$group

failCount=0
tempLog=$(mktemp -u)
function addConfig() {
  curl -X POST -H ${contentType} http$nacosAddrnacosv1csconfigsdataId=$(urlencode $1)&group=$group&content=$(urlencode $2)&tenant=$tenant&username=$username&password=$password ${tempLog} 2devnull
  if [[ -z $(cat ${tempLog}) ]]; then
    echo  Please check the cluster status. 
    exit 1
  fi
  if [[ $(cat ${tempLog}) =~ true ]]; then
    echo Set $1=$2 successfully 
  else
    echo Set $1=$2 failure 
    (( failCount++ ))
  fi
}

count=0
for line in $(cat $(dirname $PWD)config.txt  sed s[[space]]g); do
  (( count++ ))
	key=${line%%=}
    value=${line#=}
	addConfig ${key} ${value}
done

echo =========================================================================
echo  Complete initialization parameters,  total-count$count ,  failure-count$failCount 
echo =========================================================================

if [[ ${failCount} -eq 0 ]]; then
	echo  Init nacos config finished, please start seata-server. 
else
	echo  init nacos config fail. 
fi